package com.nix.web.databases.mapper.word;

import com.nix.web.databases.CurdFactory;
import com.nix.web.databases.pojo.word.MarkWord;
import com.nix.web.databases.pojo.word.Word;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;

/**
 * Title: Emotional-Analysis
 * Date: Create in 2018/1/9 1:06
 * Description:
 *
 * @author Jundger
 * @version 1.0
 */
public interface MarkWordMapper extends CurdFactory<MarkWord> {

    /**
     * 获取所有绑定单词
     * 查询条件：
     * 1、user_id为当前用户
     * 2、情绪id（noun_emotion_id）值为0
     * 3、最多返回count条数据
     * @param id 用户id
     * @param count 每次查询返回的行数
     * @return 满足标注条件的单词
     */
    MarkWord[] getBindWord(@Param("id") Integer id, @Param("number") Integer count);

    /**
     * 获取满足标注条件的单词
     * 查询条件：
     * 1、单词词性为传入参数category
     * 2、单词被标注次数少于2次
     * 3、单词尚未被当前用户标记过
     * 4、最多返回count条数据
     * @param id 用户id
     * @param repetitions 单词需要的标记次数
     * @param count 每次查询返回的行数
     * @param category 要标记单词的词性
     * @return 满足标注条件的单词
     */
    MarkWord[] getMarkWord(@Param("id") Integer id, @Param("times") Integer repetitions, @Param("number") Integer count, @Param("category") String category) throws Exception;

    /**
     * 绑定单词
     * @param word 被绑定单词的word_id
     * @param user 被绑定单词的user_id
     * @return 数据库操作后被影响的行数
     * @throws Exception 数据库操作异常
     */
    int bindWords(@Param("word_id") Integer word, @Param("user_id") Integer user) throws Exception;


    /**
     * 统计用户标注过的单词个数
     * @param id 用户ID
     * @return 已标注单词个数
     */
    Integer getMarkCountById(Integer id) throws Exception;

    /**
     * 统计用户标注过的微博个数
     * @param id 用户ID
     * @return 已标注微博个数
     */
    Integer getMarkWeiboCountById(Integer id) throws Exception;
}
